লারাভেল সিডিং (Laravel Seeding)

Web Development - লারাভেল (Laravel) - লারাভেল ডাটাবেইজ (Laravel Database) |
7
7

লারাভেল (Laravel) একটি শক্তিশালী PHP ফ্রেমওয়ার্ক, যা ডেভেলপারদের জন্য সহজ এবং কার্যকরী ডেটাবেস পরিচালনা ব্যবস্থা প্রদান করে। লারাভেল সিডিং (Seeding) হল একটি প্রক্রিয়া, যার মাধ্যমে ডাটাবেসে ডামি বা প্রাথমিক ডেটা ইনসার্ট করা হয়। এটি সাধারণত ডেভেলপমেন্ট বা টেস্টিং পরিবেশে ব্যবহৃত হয়, যেখানে রিয়েল ডেটার পরিবর্তে কিছু ডামি ডেটা প্রয়োজন হয়।

সিডিং কি?

সিডিং (Seeding) হল ডেটাবেসের টেবিলগুলিতে প্রাথমিক ডেটা ইনসার্ট করার প্রক্রিয়া। এর মাধ্যমে আপনি ডাটাবেসে প্রয়োজনীয় ডেটা যেমন ব্যবহারকারী, পণ্য, ক্যাটেগরি, বা অন্যান্য ডামি ডেটা তৈরি করতে পারেন। এটি অ্যাপ্লিকেশন ডেভেলপমেন্টে খুবই উপকারী, বিশেষ করে যখন ডেভেলপারদের নতুন টেবিল তৈরি করতে হয় এবং ডাটাবেসে কিছু প্রাথমিক ডেটা থাকতে হয়।

সিডার (Seeder) তৈরি করা

লারাভেলে সিডার ফাইলগুলি database/seeders ডিরেক্টরিতে রাখা হয়। নতুন একটি সিডার ফাইল তৈরি করতে artisan কমান্ড ব্যবহার করা হয়।

সিডার ফাইল তৈরি করা

নতুন একটি সিডার ফাইল তৈরি করতে নিম্নলিখিত কমান্ডটি ব্যবহার করা হয়:

php artisan make:seeder UsersTableSeeder

এই কমান্ডটি database/seeders/UsersTableSeeder.php ফাইল তৈরি করবে, যেখানে আপনি টেবিলে ডেটা ইনসার্ট করার কোড লিখবেন।

সিডার ফাইলে ডেটা ইনসার্ট করা

এখন UsersTableSeeder.php ফাইলটি খুলে সেখানে ডেটা ইনসার্ট করার কোড লিখুন:

// database/seeders/UsersTableSeeder.php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;

class UsersTableSeeder extends Seeder
{
    public function run()
    {
        DB::table('users')->insert([
            'name' => 'John Doe',
            'email' => 'johndoe@example.com',
            'password' => bcrypt('password'),
            'remember_token' => Str::random(10),
        ]);
    }
}

এখানে, users টেবিলে একটি নতুন ব্যবহারকারী ইনসার্ট করা হয়েছে। আপনি এইভাবে অন্যান্য টেবিলেও ডেটা ইনসার্ট করতে পারেন।

সিডার রান করা

সিডার ফাইল তৈরি করার পর, সেগুলোকে ডাটাবেসে ইনসার্ট করতে artisan কমান্ড ব্যবহার করা হয়। সমস্ত সিডার রান করতে db:seed কমান্ড ব্যবহার করুন:

php artisan db:seed

এটি সমস্ত সিডার রান করবে এবং আপনার ডাটাবেসে ডেটা ইনসার্ট করবে।

নির্দিষ্ট সিডার রান করা

যদি আপনি কোনো নির্দিষ্ট সিডার ফাইল রান করতে চান, তবে নিচের কমান্ডটি ব্যবহার করতে পারেন:

php artisan db:seed --class=UsersTableSeeder

এটি শুধুমাত্র UsersTableSeeder সিডার ফাইলটি রান করবে।

সিডিং ও মাইগ্রেশন একত্রে চলানো

আপনি যদি ডাটাবেস মাইগ্রেশন এবং সিডিং একসাথে চালাতে চান, তাহলে migrate:refresh কমান্ড ব্যবহার করতে পারেন। এটি ডাটাবেস মাইগ্রেশন রিফ্রেশ করবে এবং তারপর সিডার রান করবে:

php artisan migrate:refresh --seed

এটি ডাটাবেসের সমস্ত মাইগ্রেশন রোলব্যাক করবে, পুনরায় মাইগ্রেশন করবে এবং তারপর সিডার ফাইল রান করবে।

ফেক ডেটা তৈরি করা (Fake Data)

লারাভেল সিডিংয়ে ফেক ডেটা ইনসার্ট করার জন্য ফ্যাক্টরি (Factory) ব্যবহার করা যায়। Faker লাইব্রেরি দিয়ে ডেভেলপাররা সহজেই ফেক ডেটা তৈরি করতে পারেন, যা ডেটাবেস সিডিংয়ে খুবই উপকারী।

ফ্যাক্টরি তৈরি করা

নতুন একটি ফ্যাক্টরি তৈরি করতে artisan কমান্ড ব্যবহার করুন:

php artisan make:factory UserFactory

এরপর database/factories/UserFactory.php ফাইলে ফেক ডেটা তৈরি করতে হবে:

// database/factories/UserFactory.php

namespace Database\Factories;

use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;

class UserFactory extends Factory
{
    protected $model = User::class;

    public function definition()
    {
        return [
            'name' => $this->faker->name,
            'email' => $this->faker->unique()->safeEmail,
            'password' => bcrypt('password'),
        ];
    }
}

ফ্যাক্টরি ব্যবহার করে সিডিং করা

এখন আপনি সিডার ফাইলে ফ্যাক্টরি ব্যবহার করতে পারেন:

// database/seeders/UsersTableSeeder.php

use App\Models\User;

public function run()
{
    User::factory()->count(50)->create();
}

এটি ৫০টি ফেক ইউজার ইনসার্ট করবে।


লারাভেল সিডিং (Laravel Seeding) ব্যবহার করে আপনি সহজেই ডাটাবেসে ডামি ডেটা বা প্রাথমিক ডেটা ইনসার্ট করতে পারেন, যা ডেভেলপমেন্ট এবং টেস্টিং প্রক্রিয়াকে দ্রুত ও সহজ করে তোলে। ফেক ডেটার মাধ্যমে বড় ডেটাবেস তৈরি করা সম্ভব এবং এটি প্রকৃত ডেটা না থাকলেও আপনার অ্যাপ্লিকেশনটি পরীক্ষার জন্য প্রস্তুত থাকে।

Content added By
Promotion